package fl.ass.service.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cmm.mid.core.framework.page.Pager;
import cmm.service.core.framework.dao.IBaseDao;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.project.condition.PrjPrdPaySchDQueryCondition;
import fl.ass.facade.condition.AssTrailCarDQueryCondition;
import fl.ass.facade.dto.AssTrailCarDDTO;
import fl.ass.facade.dto.ProductStatusLogDTO;
import fl.ass.service.po.AssTrailCarD;
import fl.ass.service.po.PrjPrdPaySchD;

/**
 *  @Description: 拖车信息明细表 持久层
 *  @Description: 持久层方法名称前缀：新增：insert* 删除：delete* 修改：update* 批量：batch* 查询对象：select* get* find* 查询集合：select*
 */
public interface AssTrailCarDMapper extends IBaseDao<AssTrailCarD,AssTrailCarDQueryCondition>{

	/**
	 * 分页查询拖车申请列表
	 * @param page
	 * @return
	 */
	public List<AssTrailCarDDTO> selectTrailCarApplyListByPage(Pager page);
	
	/**
	 * 根据支付表ID查询支付表对应的基本信息
	 * @param paySchIds
	 * @return
	 */
	public List<AssTrailCarDDTO> findTrailCarApplyListByPaySchIds(@Param(value="paySchIds") List<Long> paySchIds, @Param(value="prjPrdDtlId") Long prjPrdDtlId);
	
	/**
	 * 根据支付表ID查询支付表对应的所属事业部
	 * @param paySchId
	 * @return
	 */
	public AssTrailCarDDTO findOrgInfoByPaySchId(@Param(value="paySchId") Long paySchId);
	
	/**
	 * 修改拖车明细信息
	 * @param dto
	 */
	public void updateAssTrailCarDetailInfo(AssTrailCarDDTO dto);
	
	/**
	 * 根据ID获取支付表的基本信息
	 * @param dtos
	 * @return
	 */
	public List<AssTrailCarDDTO> findPayListByIds(@Param(value="dtos") List<ProductStatusLogDTO> dtos);

	/**
	 * 修改支付表结清状态-根据支付表ID
	 * @param dtos
	 * @return
	 */
	public void updatePayStatusBySettle(AssTrailCarDDTO dto);
	
	/**
	 * 修改支付表转正状态-根据支付表ID
	 * @param dtos
	 * @return
	 */
	public void updatePayStatusByTurnNormal(AssTrailCarDDTO dto);
	
	/**
	 * 修改支付表拖回状态-根据支付表ID
	 * @param dtos
	 * @return
	 */
	public void updatePayStatusByBack(AssTrailCarDDTO dto);
	
	/**
	 * 修改支付表状态-根据项目产品明细ID
	 * @param dtos
	 * @return
	 */
	public void updatePayStatus(AssTrailCarDDTO dto);
	
	/**
	 * 批量新增支付表状态变更日志
	 * @param dtos
	 * @return
	 */
	public void batchAddPrdStatusLog(@Param(value="dtos") List<ProductStatusLogDTO> dtos);
	
	/**
	 * 根据ID获取拖车对应的基本信息
	 * @param ids
	 * @return
	 */
	public List<AssTrailCarDDTO> findTrailCarDetailListByIds(@Param(value="ids") List<Long> ids);
	
	/**
	 * 根据表名获取主键
	 * @param tabNm
	 * @return
	 */
	public Long selectPkId(String tabNm) throws BaseException;

	/**
	 * 修改拖车明细数据历史状态
	 * @param paySchIds
	 * @param masterId
	 * @return
	 */
	public void updateTrailCarDetailHisStatus(@Param(value="paySchIds") List<Long> paySchIds,@Param(value="masterId") Long masterId);

	/**
	 * 分页查询拖车管理列表
	 * @param page
	 * @return
	 */
	public List<AssTrailCarDDTO> selectTrailCarListByPage(Pager page);
	
	/**
	 * 不分页查询拖车管理列表
	 * @param qc
	 * @return
	 */
	public List<AssTrailCarDDTO> selectTrailCarList(@Param("condition")AssTrailCarDQueryCondition condition);
	
	/**
	 * 不分页查询拖车申请列表
	 * @param qc
	 * @return
	 */
	public List<AssTrailCarD> selectTrailCarApplyList(@Param("condition")AssTrailCarDQueryCondition condition);
	
	public Long insertPrjPrdPaySchD(PrjPrdPaySchD prjPrdPaySchD);
	
	/**
	 * 根据项目ID查询客户经理组织架构
	 * @param prjId
	 * @return
	 */
	public String selectCstMgrOrgCd(@Param("prjId")Long prjId);
	public List<PrjPrdPaySchD> selectPrjPrdPayList(@Param("condition")PrjPrdPaySchDQueryCondition prjPrdPaySchDQueryCondition);
	
	/**
	 * 查询支付表明细  信息
	 * @param prjPrdPaySchDQueryCondition
	 * @return List<PrjPrdPaySchD>
	 */
	public List<PrjPrdPaySchD> selectPrjPaySchList(@Param("condition")PrjPrdPaySchDQueryCondition prjPrdPaySchDQueryCondition);
	
	/**
	 * 查询支付表  其他项  明细信息
	 * @param prjPrdPaySchDQueryCondition
	 * @return List<PrjPrdPaySchD>
	 */
	public List<PrjPrdPaySchD> selectPrjPaySchFeeList(@Param("condition")PrjPrdPaySchDQueryCondition prjPrdPaySchDQueryCondition);
	
	
	/**
	 * 批量新增项目产品支付表主明细信息
	 * @param list
	 * @return
	 */
	public void batchAddPrjPrdPaySchD(List<PrjPrdPaySchD> list);
	
	/**
	 * 更新支付表明细
	 * @param prjPrdPaySchD
	 * @return
	 */
	public boolean updatePrjPrdPaySchD(PrjPrdPaySchD prjPrdPaySchD);
	
	
}
